package br.macedo.bll;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;

import br.macedo.dao.EnqueteDAO;
import br.macedo.entities.Alternativa;
import br.macedo.entities.Enquete;
import br.macedo.entities.Pergunta;
import br.macedo.model.QuestionModel;
import br.macedo.model.SurveyModel;
import br.macedo.util.SurveyUtil;

public class Survey {

	public static int novaEnquete(String string, List<QuestionModel> questions ) {
		Enquete e = new Enquete();
		e.setDescricao(string);
		EntityManager em = SurveyUtil.getEntityManager();
		EnqueteDAO dao = new EnqueteDAO(em);
		em.getTransaction().begin();
		List<Pergunta> perguntas = new ArrayList<Pergunta>();
		for (QuestionModel questionModel : questions) {
			Pergunta pergunta = new Pergunta();
			pergunta.setQtdeAleternativas(1);
			List<Alternativa> alternativas = new ArrayList<Alternativa>();
			for (String alternativa : questionModel.getAlternatives()) {
				Alternativa novaAlternativa = new Alternativa();
				novaAlternativa.setDescricao(alternativa);
				novaAlternativa.setPergunta(pergunta);
				alternativas.add(novaAlternativa);
			}
			pergunta.setTextopergunta(questionModel.getQuestion());
			pergunta.setAlternativas(alternativas);
			pergunta.setEnquete(e);
			perguntas.add(pergunta);
			
		}
		e.setPerguntas( perguntas );
		dao.adiciona(e);
		em.getTransaction().commit();
		System.out.println(e.getIdenquete());

		return e.getIdenquete();
	}

	public static SurveyModel pesquisaEnquete(int id) {
		EntityManager em = SurveyUtil.getEntityManager();
		EnqueteDAO dao = new EnqueteDAO(em);
		Enquete obj = dao.busca(id);
		return CopyFromEnquete2SurveyModel(obj);
	}

	private static SurveyModel CopyFromEnquete2SurveyModel(Enquete obj) {
		
		SurveyModel surveyModel = new SurveyModel();
		List<QuestionModel> questions = new ArrayList<QuestionModel>();
		for (Pergunta p : obj.getPerguntas()) {
			QuestionModel q= new QuestionModel();
			q.setQuestion(p.getTextopergunta());
			List<String> alternatives = new ArrayList<String>();
			for ( Alternativa alternativa : p.getAlternativas() )
			{
				alternatives.add(alternativa.getDescricao());
			}
			q.setAlternatives(alternatives);
			questions.add(q);
		}
		surveyModel.setQuestions(questions);
		surveyModel.setTitulo(obj.getDescricao());
		surveyModel.setId(obj.getIdenquete());
		
		return surveyModel;
	}

	public static void inserePergunta(int id, List<String> opcoes) {
		// TODO Auto-generated method stub
		
	}
	
	

}
